/**
 * 图片优化工具
 * 用于运行时处理和优化大图片，减少内存占用和提高性能
 */

// 大图片路径映射表 - 将原始大图路径映射到压缩后的图片路径
const largeImagesMap = {
  // 地图图片
  '/images/地图/615ad4f7fb37e61215ab2b809163237.jpg': '/compressed_images/map_thumbnail.jpg',
  
  // 大尺寸图标
  'https://img.picui.cn/free/2025/05/12/6821fa6ada03a.jpg': '/compressed_images/icon_compressed.jpg',
  
  // 商品大图
  'https://img.picui.cn/free/2025/05/12/6821d42cf1a87.jpg': '/compressed_images/product4_small.jpg',
  'https://img.picui.cn/free/2025/05/12/6821d260a2dc7.png': '/compressed_images/product3_small.jpg',
  'https://img.picui.cn/free/2025/05/12/6821e6f2457dc.png': '/compressed_images/product5_small.jpg',
  
  // 文化大图
  'https://img.picui.cn/free/2025/05/12/6821e87056a5c.png': '/compressed_images/culture1_small.jpg',
  'https://img.picui.cn/free/2025/05/12/6821e898e69bf.png': '/compressed_images/culture_small.jpg',
  'https://img.picui.cn/free/2025/05/12/6821e870a43c6.png': '/compressed_images/culture2_small.jpg',
  '/icon/d2b60f334ebf9072aaeb1e7465fc596.jpg': '/compressed_images/icon_d2_small.jpg',
  'https://img.picui.cn/free/2025/05/12/6821e8ace3e4a.jpg': '/compressed_images/culture_a7_small.jpg',
  'https://img.picui.cn/free/2025/05/12/6821e8b5eba1b.jpg': '/compressed_images/culture_fa_small.jpg',
  'https://img.picui.cn/free/2025/05/12/6821fb7691069.jpg': '/compressed_images/icon_a4_small.jpg'
};

// 懒加载图片的占位符
const PLACEHOLDER_IMAGE = '/compressed_images/placeholder.jpg';

/**
 * 优化图片URL - 如果是大图，返回压缩版本的URL
 * @param {string} url 原始图片URL
 * @returns {string} 优化后的图片URL
 */
const optimizeImageUrl = (url) => {
  // 如果URL存在于大图映射表中，返回压缩版本
  if (largeImagesMap[url]) {
    return largeImagesMap[url];
  }
  return url;
};

/**
 * 懒加载图片 - 先显示占位图，然后异步加载实际图片
 * @param {Object} options 配置选项
 * @param {string} options.src 原始图片URL
 * @param {Function} options.success 成功回调函数，参数为优化后的图片URL
 * @param {Function} options.fail 失败回调函数
 * @param {number} options.quality 压缩质量(0-100)，默认为80
 */
const lazyLoadImage = (options) => {
  const { src, success, fail, quality = 80 } = options;
  
  // 立即返回占位图或压缩版本
  const optimizedUrl = optimizeImageUrl(src);
  
  // 如果有成功回调，先返回占位图或优化的URL
  if (success && typeof success === 'function') {
    success(optimizedUrl);
  }
  
  // 如果不是大图，不需要进一步处理
  if (optimizedUrl !== src) {
    return;
  }
  
  // 对于其他图片，使用微信API进行压缩
  const app = getApp();
  if (app && app.compressImage) {
    app.compressImage(src, quality)
      .then(tempFilePath => {
        if (success && typeof success === 'function') {
          success(tempFilePath);
        }
      })
      .catch(err => {
        console.error('图片懒加载失败:', err);
        if (fail && typeof fail === 'function') {
          fail(err);
        }
      });
  }
};

module.exports = {
  optimizeImageUrl,
  lazyLoadImage,
  PLACEHOLDER_IMAGE
}; 